package Calc;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class CalculadoraUI extends JFrame implements ActionListener {
	private JPanel jp, pantalla, botones;
	private JLabel jl;
	private JButton uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve,
	cero, sumar, restar, multiplicar, dividir, igual, borrar;
	private int resultado = 0;
	private int primerNum, segundoNum;
	private String numero1 = "";
	private String numero2 = "";
	private String operador = "";
	private boolean seguirIntroduciendo = false;

	public void crearVentana() {
		setTitle("Calculadora");
		int ancho = Toolkit.getDefaultToolkit().getScreenSize().width;
		int alto = Toolkit.getDefaultToolkit().getScreenSize().height;
		int tAncho = 250;
		int tAlto = 300;
		setSize(tAncho, tAlto);
		setResizable(false);
		setLocation((ancho / 2) - (tAncho / 2), (alto / 2) - (tAlto / 2));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		this.jp = new JPanel();
		this.add(jp);
		jp.setLayout(new GridLayout(2, 1));

		this.pantalla = new JPanel();
		jp.add(pantalla);
		pantalla.setLayout(new GridLayout(6, 1));

		this.botones = new JPanel();
		jp.add(botones);
		botones.setLayout(new GridLayout(4, 3));

		this.jl = new JLabel("0");
		pantalla.add(jl);

		uno = new JButton("1");
		dos = new JButton("2");
		tres = new JButton("3");
		cuatro = new JButton("4");
		cinco = new JButton("5");
		seis = new JButton("6");
		siete = new JButton("7");
		ocho = new JButton("8");
		nueve = new JButton("9");
		cero = new JButton("0");
		sumar = new JButton("+");
		restar = new JButton("-");
		multiplicar = new JButton("*");
		dividir = new JButton("/");
		igual = new JButton("=");
		borrar = new JButton("C");

		botones.add(siete);
		botones.add(ocho);
		botones.add(nueve);
		botones.add(dividir);
		botones.add(cuatro);
		botones.add(cinco);
		botones.add(seis);
		botones.add(multiplicar);
		botones.add(uno);
		botones.add(dos);
		botones.add(tres);
		botones.add(restar);
		botones.add(cero);
		botones.add(borrar);
		botones.add(igual);
		botones.add(sumar);
		setVisible(true);
		this.crearEventos();
	}

	public void crearEventos() {
		uno.addActionListener(this);
		dos.addActionListener(this);
		tres.addActionListener(this);
		cuatro.addActionListener(this);
		cinco.addActionListener(this);
		seis.addActionListener(this);
		siete.addActionListener(this);
		ocho.addActionListener(this);
		nueve.addActionListener(this);
		cero.addActionListener(this);
		sumar.addActionListener(this);
		restar.addActionListener(this);
		multiplicar.addActionListener(this);
		dividir.addActionListener(this);
		igual.addActionListener(this);
		borrar.addActionListener(this);

		uno.setActionCommand("uno");
		dos.setActionCommand("dos");
		tres.setActionCommand("tres");
		cuatro.setActionCommand("cuatro");
		cinco.setActionCommand("cinco");
		seis.setActionCommand("seis");
		siete.setActionCommand("siete");
		ocho.setActionCommand("ocho");
		nueve.setActionCommand("nueve");
		cero.setActionCommand("cero");
		sumar.setActionCommand("sumar");
		restar.setActionCommand("restar");
		multiplicar.setActionCommand("multiplicar");
		dividir.setActionCommand("dividir");
		igual.setActionCommand("igual");
		borrar.setActionCommand("borrar");
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (seguirIntroduciendo == false) {
			if (e.getActionCommand().equals("uno")) {
				jl.setText(numero1 = numero1 + "1");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("dos")) {
				jl.setText(numero1 = numero1 + "2");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("tres")) {
				jl.setText(numero1 = numero1 + "3");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("cuatro")) {
				jl.setText(numero1 = numero1 + "4");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("cinco")) {
				jl.setText(numero1 = numero1 + "5");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("seis")) {
				jl.setText(numero1 = numero1 + "6");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("siete")) {
				jl.setText(numero1 = numero1 + "7");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("ocho")) {
				jl.setText(numero1 = numero1 + "8");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("nueve")) {
				jl.setText(numero1 = numero1 + "9");
				primerNum = Integer.parseInt(numero1);
			} else if (e.getActionCommand().equals("cero")) {
				jl.setText(numero1 = numero1 + "0");
				primerNum = Integer.parseInt(numero1);
			}
		} else {
			if (e.getActionCommand().equals("uno")) {
				jl.setText(numero2 = numero2 + "1");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("dos")) {
				jl.setText(numero2 = numero2 + "2");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("tres")) {
				jl.setText(numero2 = numero2 + "3");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("cuatro")) {
				jl.setText(numero2 = numero2 + "4");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("cinco")) {
				jl.setText(numero2 = numero2 + "5");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("seis")) {
				jl.setText(numero2 = numero2 + "6");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("siete")) {
				jl.setText(numero2 = numero2 + "7");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("ocho")) {
				jl.setText(numero2 = numero2 + "8");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("nueve")) {
				jl.setText(numero2 = numero2 + "9");
				segundoNum = Integer.parseInt(numero2);
			} else if (e.getActionCommand().equals("cero")) {
				jl.setText(numero2 = numero2 + "0");
				segundoNum = Integer.parseInt(numero2);
			}
		}

		if (e.getActionCommand().equals("sumar")) {
			seguirIntroduciendo = true;
			jl.setText("+");
			operador = "+";
		} else if (e.getActionCommand().equals("restar")) {
			seguirIntroduciendo = true;
			jl.setText("-");
			operador = "-";
		} else if (e.getActionCommand().equals("multiplicar")) {
			seguirIntroduciendo = true;
			jl.setText("*");
			operador = "*";
		} else if (e.getActionCommand().equals("dividir")) {
			seguirIntroduciendo = true;
			jl.setText("/");
			operador = "/";
		} else if (e.getActionCommand().equals("borrar")) {
			seguirIntroduciendo=false;
			resultado = 0;
			numero1 = "";
			numero2 = "";
			primerNum=0;
			segundoNum=0;
			jl.setText("0");
		} else if (e.getActionCommand().equals("igual")) {
			if (operador.equals("+")) {
				resultado = primerNum + segundoNum;
				jl.setText(Integer.toString(this.resultado));
			} else if (operador.equals("-")) {
				resultado = primerNum - segundoNum;
				jl.setText(Integer.toString(this.resultado));
			} else if (operador.equals("*")) {
				resultado = primerNum * segundoNum;
				jl.setText(Integer.toString(this.resultado));
			} else if (operador.equals("/")) {
				resultado = primerNum / segundoNum;
				jl.setText(Integer.toString(this.resultado));
			}

		}
	}
}